#pragma once

///////////////////////////////////////////////////////////////////////////
//																		 //
//	Author:		Michael Mozdzierz										 //
//	Date:		12/06/2014												 //
//	Purpose:	Define a base class for all audio object in the game	 //
//																		 //
///////////////////////////////////////////////////////////////////////////
#include <fmod.hpp>
// Exposes base functions for audio objects
class ISoundElement
{
	friend class AudioManager;

	virtual FMOD::Channel* getChannel(void) const = 0;

	virtual FMOD::Sound* getSound(void) const = 0;

	virtual void setChannel(FMOD::Channel* value) = 0;

	virtual void setSound(FMOD::Sound* value) = 0;

	virtual bool getIsPlaying(void) const = 0;

	virtual bool getIsLooped(void) const = 0;

	virtual void setIsLooped(bool value) = 0;
public:
	virtual void setVolume(float value) = 0;

	virtual float getVolume(void) const = 0;

	virtual ~ISoundElement(void) { }

	// updates the sound
	virtual void Update(void) = 0;
};